﻿

namespace SSS.AlphaNN.Forms
{
    using System;
    using System.Windows.Forms;

    using Components;

    public partial class PropertiesDBForm : PropertiesForm
    {
        /// <summary>
        /// Объект источник, у которого есть свойства редактируемые пользователем
        /// </summary>
        private DataMedium _sender;

        public PropertiesDBForm(DataMedium s)
        {
            InitializeComponent();
            _sender = s;
            if (s is Source)
            {
                this.Text = "Свойства источника";
            }
            else
            {
                this.Text = "Свойства учителя";
                labelCountLearning.Visible = true;
                accuracy.Visible = true;
                numericUpDownAccuracy.Visible = true;
                numericUpDownAccuracy.Value = (_sender as Teacher).epsilon;
                textBoxCL.Text = (_sender as Teacher).countLearning.ToString();
                textBoxCL.Visible = true;
                lblSpeedTheaching.Visible = true;
                tbxSpeedTheaching.Visible = true;
            }

            
            //Если объект ранее был инициализирован пользователем, а его поля были заполненные,
            //то нам ничего другого не остаётся, как пользоваться значениями забитыми ранее;-) 
            pathDB.Text = _sender.PathFileDb;
            _textBox1.Text = s.Login ?? "";
            _textBox2.Text = s.Password ?? "";
            richTextBox1.Text = _sender.Query;

            if ((s.Login??"").Length>0)
            {
                checkBox1.Checked = true;
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "mdb Files|*.mdb|accdb Files|*.accdb|All Files|*.*";
            
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                pathDB.Text = ofd.FileName;
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            Password.Enabled = checkBox1.Checked;
            nameUserLabel.Enabled = checkBox1.Checked;
            _textBox1.Enabled = checkBox1.Checked;
            _textBox2.Enabled = checkBox1.Checked;
            if (!checkBox1.Checked)
            {
                _textBox1.Text = String.Empty;
                _textBox2.Text = String.Empty;
            }

        }

        /// <summary>
        /// ОБновляем поля нашего объекта
        /// </summary>
        protected override void SetProperties()
        {
            if (checkBox1.Checked)
            {
                _sender.Login =_textBox1.Text;
                _sender.Password = _textBox2.Text;
            }
            else
            {
                _sender.Login = String.Empty;
                _sender.Password = String.Empty;
            }

            _sender.PathFileDb = pathDB.Text;
            _sender.Query = richTextBox1.Text;

            if (_sender is Teacher)
            {
                int countL = 1;
                if (int.TryParse(textBoxCL.Text, out countL))
                {
                    (_sender as Teacher).countLearning = countL;
                }

                (_sender as Teacher).epsilon =(int)numericUpDownAccuracy.Value;
            }
        }

        private void PropertiesDBForm_Load(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// Кнопка ОК
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            SetProperties();
            Close();
        }

        /// <summary>
        /// кнопка Применить
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            SetProperties();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {

        }
    }
}
